import java.util.EventListener;


/**
 * This interface contains abstract methods to implement
 * for all the commands. When you want to add a new command,
 * you should add it here.
 * @author Tobias Johansson
 *
 */
public interface LolBotEventListener extends EventListener {
	/**
	 * Called when a PING is received from the server.
	 */
	public void onPing();
	
	/**
	 * Called when someone joins the channel.
	 * @param e
	 */
	public void onJoin(LolBotEvent e);
	
	/**
	 * Called when you want LolBot to exit.
	 * @param e
	 */
	public void onExit(LolBotEvent e);
	
	/**
	 * Called when LolBot is kicked from a channel.
	 * @param e
	 */
	public void onLolBotKicked(LolBotEvent e);
	
	/**
	 * Called when you want LolBot to OP one or more people.
	 * @param e
	 */
	public void onOp(LolBotEvent e);
	
	/**
	 * Called when you want LolBot to say something in the chat.
	 * @param e
	 */
	public void onSay(LolBotEvent e);
	
	/**
	 * Called when you want LolBot to use the "/me" command.
	 * @param e
	 */
	public void onMe(LolBotEvent e);
	
	/**
	 * Called when you want to add an OP to the OP list.
	 */
	public void onAddOp(LolBotEvent e);
	
	/**
	 * Called when you want to delete an OP from the OP list.
	 * @param e
	 */
	public void onDelOp(LolBotEvent e);
	
	/**
	 * Called when you want to add a bad word to the bad words list.
	 * @param e
	 */
	public void onAddBadWord(LolBotEvent e);
	
	/**
	 * Called when you want to remove a bad word from the bad words list.
	 * @param e
	 */
	public void onDelBadWord(LolBotEvent e);
	
	/**
	 * Called when you want to add a name to the ignore list.
	 * @param e
	 */
	public void onIgnore(LolBotEvent e);
	
	/**
	 * Called when you want to remove a name from the ignore list.
	 * @param e
	 */
	public void onUnignore(LolBotEvent e);
	
	/**
	 * Called when you want to know the available commands.
	 * @param e
	 */
	public void onHelp(LolBotEvent e);
	
	/**
	 * Called when you want to draw Trollface in the chat.
	 * @param e 
	 */
	public void onNithander(LolBotEvent e);
	
	/**
	 * Called when you want LolBot to sing a song.
	 * @param e
	 */
	public void onSing(LolBotEvent e);
	
	/**
	 * Called when you want LolBot to stop singing.
	 * @param e 
	 */
	public void onStopSinging(LolBotEvent e);
	
	/**
	 * Called when you want to know today's date.
	 * @param e
	 */
	public void onDate(LolBotEvent e);
	
	/**
	 * Called when you want to know the URL to LolBot's online repository.
	 * @param e
	 */
	public void onPhoneHome(LolBotEvent e);
	
	/**
	 * Called when you want LolBot to play pong with another bot (or human).
	 * @param e
	 */
	public void onBlopp(LolBotEvent e);
	
	/**
	 * Called when you want to play some russian roulette.
	 * @param e
	 */
	public void onRussianRoulette(LolBotEvent e);
	
	/**
	 * Called when a game of russian roulette is playing 
	 * and you want to try your luck.
	 * @param e
	 */
	public void onClick(LolBotEvent e);
	
	/**
	 * Called when a game of russian roulette is playing 
	 * and you want to spin the cylinder.
	 * @param e
	 */
	public void onSpin(LolBotEvent e);
	
	/**
	 * Called when you want to know who are on the OP list.
	 * @param e TODO
	 */
	public void onListOfOps(LolBotEvent e);
	
	/**
	 * Called when you want to know all the bad words.
	 * @param e
	 */
	public void onListOfBadWords(LolBotEvent e);
	
	/**
	 * Called when someone writes the word "rendezvous" in the chat.
	 * @param e
	 */
	public void onRendezvous(LolBotEvent e);
	
	/**
	 * Called when someone writes the word "messerschmidt" in the chat.
	 * @param e
	 */
	public void onMesserschmidt(LolBotEvent e);
	
	/**
	 * Called when someone writes a bad word in the chat.
	 * @param e
	 */
	public void onBadWord(LolBotEvent e);
	
	/**
	 * Called when someone writes the word "slap" in the chat.
	 * @param e
	 */
	public void onSlap(LolBotEvent e);
}
